package com.xique.park.service.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.xique.common.core.utils.DateUtils;
import com.xique.common.core.utils.StringUtils;
import com.xique.park.bean.dto.ChargeMngTypeGarageDto;
import com.xique.park.bean.request.web.chargeRule.TypeGarageObj;
import com.xique.park.bean.search.web.ChargeMngTypeGarageSearch;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xique.park.mapper.ParkChargeCarTempMapper;
import com.xique.park.bean.domain.ParkChargeCarTemp;
import com.xique.park.service.service.IParkChargeCarTempService;
import sun.swing.StringUIClientPropertyKey;

/**
 * 临停车计费Service业务层处理
 * 
 * @author xique
 * @date 2021-12-09
 */
@Service
public class ParkChargeCarTempServiceImpl implements IParkChargeCarTempService 
{
    @Autowired
    private ParkChargeCarTempMapper parkChargeCarTempMapper;

    /**
     * 查询临停车计费
     * 
     * @param id 临停车计费ID
     * @return 临停车计费
     */
    @Override
    public ParkChargeCarTemp selectParkChargeCarTempById(Long id)
    {
        return parkChargeCarTempMapper.selectById(id);
    }

    /**
     * 查询临停车计费列表
     * 
     * @param parkChargeCarTemp 临停车计费
     * @return 临停车计费
     */
    @Override
    public List<ParkChargeCarTemp> selectParkChargeCarTempList(ParkChargeCarTemp parkChargeCarTemp)
    {
        Map<String,Object> params = new HashMap<>();
        if(StringUtils.isNotNull(parkChargeCarTemp.getParkId())){
            params.put("park_id",parkChargeCarTemp.getParkId());
        }
        if(StringUtils.isNotNull(parkChargeCarTemp.getMngTypeId())){
            params.put("mng_type_id",parkChargeCarTemp.getMngTypeId());
        }
        if(StringUtils.isNotNull(parkChargeCarTemp.getGarageId())){
            params.put("garage_id",parkChargeCarTemp.getGarageId());
        }
        if(StringUtils.isNotNull(parkChargeCarTemp.getChargeRuleId())){
            params.put("charge_rule_id",parkChargeCarTemp.getChargeRuleId());
        }
        return parkChargeCarTempMapper.selectByMap(params);
    }

    /**
     * 新增临停车计费
     * 
     * @param parkChargeCarTemp 临停车计费
     * @return 结果
     */
    @Override
    public int insertParkChargeCarTemp(ParkChargeCarTemp parkChargeCarTemp)
    {
        parkChargeCarTemp.setCreateTime(DateUtils.getNowDate());
        return parkChargeCarTempMapper.insert(parkChargeCarTemp);
    }

    /**
     * 修改临停车计费
     * 
     * @param parkChargeCarTemp 临停车计费
     * @return 结果
     */
    @Override
    public int updateParkChargeCarTemp(ParkChargeCarTemp parkChargeCarTemp)
    {
        parkChargeCarTemp.setUpdateTime(DateUtils.getNowDate());
        return parkChargeCarTempMapper.updateById(parkChargeCarTemp);
    }

    /**
     * 批量删除临停车计费
     * 
     * @param ids 需要删除的临停车计费ID
     * @return 结果
     */
    @Override
    public int deleteParkChargeCarTempByIds(List<Long> ids)
    {
        return parkChargeCarTempMapper.deleteBatchIds(ids);
    }

    /**
     * 删除临停车计费信息
     * 
     * @param id 临停车计费ID
     * @return 结果
     */
    @Override
    public int deleteParkChargeCarTempById(Long id)
    {
        return parkChargeCarTempMapper.deleteById(id);
    }

    /**
     * 管理类型、车库、计费规则连表查询
     * @param search
     * @return
     */
    @Override
    public List<ChargeMngTypeGarageDto> selectChargeMngTypeGarageList(ChargeMngTypeGarageSearch search) {
        return parkChargeCarTempMapper.selectChargeMngTypeGarageList(search);
    }

    /**
     * 根据管理类型和车库列表批量删除
     * @param list
     * @return
     */
    @Override
    public int batchDeleteByTypeGarage(List<TypeGarageObj> list) {
        return parkChargeCarTempMapper.batchDeleteByTypeGarage(list);
    }

    @Override
    public int batchInsert(List<ParkChargeCarTemp> list) {
        return parkChargeCarTempMapper.insertBatch(list);
    }

    @Override
    public int batchUpdate(List<ParkChargeCarTemp> list) {
        return parkChargeCarTempMapper.updateBatch(list);
    }
}
